package com.chb.docter.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.chb.docter.dto.AppRegistrationDto;
import com.chb.docter.dto.MyPage;
import com.chb.docter.dto.OrderDetailsDto;
import com.chb.docter.dto.OrderListDto;
import com.chb.docter.params.RegistrationParam;
import com.chb.docter.params.RegistrationQueryParam;
import com.hos.entity.his.Registration;

import java.util.List;

/**
 * @author: 陈海彬
 * @date: Created in 2023/12/13 10:09
 * @description:
 * @modified By:
 * @version:
 */
public interface RegistrationService {

    /**
     * 提交挂号信息
     *
     * @param registrationParam 挂号参数
     * @return 挂号流水id
     */
    String addRegistration(RegistrationParam registrationParam);


    /**
     * 进行挂号收费
     *
     * @param registrationId 挂号流水id
     */
    void collectFee(String registrationId);


    /**
     * 分页查询挂号列表
     *
     * @param param 查询参数
     */
    Page<Registration> queryRegistrationForPage(RegistrationQueryParam param);

    /**
     * 进行挂号作废
     *
     * @param registrationId 挂号流水id
     */
    void doInvalid(String registrationId);


    /**
     * 进行挂号退号
     *
     * @param registrationId 挂号流水id
     */
    void doReturn(String registrationId);


    /**
     * 加载挂号列表[待就诊]
     *
     * @param schedulingType 门诊  ---  急诊
     */
    List<Registration> queryToBeSeenRegistration(String schedulingType);

    /**
     * 加载挂号列表[就诊中]
     *
     * @param schedulingType 门诊  ---  急诊
     */
    List<Registration> queryVisitingRegistration(String schedulingType);


    /**
     * 加载挂号列表[就诊完成]
     *
     * @param schedulingType 门诊  ---  急诊
     */
    List<Registration> queryVisitCompletedRegistration(String schedulingType);


    /**
     * 进行患者接诊
     *
     * @param registrationId 挂号ID
     */
    Integer receivePatient(String registrationId);

    /**
     * 查询挂号列表
     *
     * @param page        页面
     * @param pageSize    页容量
     * @param orderStatus 订单状态
     *                    0全部
     *                    1待就诊
     *                    2待付款
     *                    3已完成
     *                    4待评价
     *                    5已取消————支付超時
     */
    MyPage<OrderListDto> getRegistrationByStatus(Integer page, Integer pageSize, String orderStatus);
    /**
     * @create by: lqs
     * @description: lqs
     * @create time: 2023/12/28
     * @param appRegistrationDto
     * @return
     */

    public String addAppRegistration(AppRegistrationDto appRegistrationDto);


    /**
     * 根据状态查询挂号列表
     *
     * @param orderState 挂号状态
     *                   0全部
     *                   1待就诊
     *                   2就诊中
     *                   3完成
     *                   4已退号
     */
    MyPage<OrderListDto> getRegistrationListAsStatus(Integer page, Integer pageSize, String orderState);
}
